package com.yunkeji.api.auth.bo;

import com.yunkeji.common.exception.AppServiceException;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.Optional;

/** @author 老张 */
@Data
@Valid
public class ToLoginBo {
    /** 手机号 */
    // @NotBlank(message = "手机号不能为空")
    private String phone;
    /** 验证码 */
    private String code;
    /** 密码 */
    private String password;
    /** 一键登录Token */
    private String oneTouchToken;

    @NotNull(message = "1=验证码登录 2=密码登录 3=一键登录")
    private Integer type;

    /**
     * 登录类型
     *
     * @author yunkeji
     */
    @Getter
    @AllArgsConstructor
    public enum LoginType {
        验证码登录(1),
        密码登录(2),
        一键登录(3),
        微信登录(4);
        public Integer code;

        public static LoginType getByCode(Integer code) {
            LoginType[] values = LoginType.values();
            Optional<LoginType> first =
                    Arrays.stream(values).filter(item -> item.getCode().equals(code)).findFirst();
            if (first.isPresent()) {
                return first.get();
            } else {
                throw AppServiceException.paramException("登录类型参数异常");
            }
        }
    }
}
